package com.proyecto.core.vista.echo.componentes;

import javax.servlet.ServletContext;

import com.proyecto.core.Utilidades.UtilReflect;
import com.proyecto.core.modelo.excepciones.GeneralException;
import com.proyecto.core.modelo.servicio.interfaces.IServicioTransaccion;
import com.proyecto.core.vista.echo.constantes.Acciones;
import com.proyecto.core.vista.echo.localizador.ServiceLocator;

import nextapp.echo2.app.ApplicationInstance;
import nextapp.echo2.app.Column;
import nextapp.echo2.app.Row;
import nextapp.echo2.app.Label;
import nextapp.echo2.app.TextField;
import nextapp.echo2.app.Extent;
import nextapp.echo2.app.Insets;
import nextapp.echo2.app.PasswordField;
import nextapp.echo2.app.layout.RowLayoutData;
import nextapp.echo2.app.Alignment;
import java.util.ResourceBundle;

@SuppressWarnings("serial")
public class CPAutorizacion extends CPAreaClaves {

	private TextField txtUsuario;
	private PasswordField txtPass;
	private IServicioTransaccion servicioSegOperacionesUsuarios;
	private String opcion;
	
	public CPAutorizacion(String opcion) {
		super();
		initComponents();
		inicializar();
		this.opcion = opcion;
	}
	
	protected void inicializar() {
		super.inicializar();
		ServletContext sc;
		try {
			sc = (ServletContext) UtilReflect.invocarMetodoGet(ApplicationInstance.getActive(),
					"ServletContext", null);
			ServiceLocator serviceLocator = new ServiceLocator(sc);
			servicioSegOperacionesUsuarios = (IServicioTransaccion) serviceLocator.getBean("ServicioSegOperacionesUsuarios");
		} catch (Exception e) {
			e.printStackTrace();
		}
	}



	@Override
	public boolean rutinaAccionAceptar() throws GeneralException {
		if(getWpClaves().getEsClaveAceptada()){
			return true;
		}else{
			wpClaves.setClaveMensaje("Usuario o Login invalido.\n Por favor verifique.");
			return false;
		}
	}
	
	@Override
	public Object rutinaAccionConsultar() throws GeneralException {
		
		if(!txtUsuario.getText().trim().equalsIgnoreCase("")&& !txtPass.getText().trim().equalsIgnoreCase("")){
			String usuario = txtUsuario.getText().trim();
			String clave = txtPass.getText().trim();
			try {
				Object resultado = UtilReflect.ejecutarMetodo(servicioSegOperacionesUsuarios, "accedeAOpcion", new Object []{"1",usuario,clave,opcion, false});
				if(resultado!= null && Boolean.parseBoolean(resultado.toString())){
					getWpClaves().setAccion(Acciones.MODO_ACEPTAR);
					return new Object();
				}else{
					getWpClaves().setAccion(Acciones.MODO_ACEPTAR);
					return null;
				}
					
			} catch (Exception e) {
				e.printStackTrace();
			} 
		}
		return null;
	}
	

	@Override
	protected void configurarBusqueda() {
	}

	public TextField getTxtUsuario() {
		return txtUsuario;
	}

	public void setTxtUsuario(TextField txtUsuario) {
		this.txtUsuario = txtUsuario;
	}

	/**
	 * Configures initial state of component.
	 * WARNING: AUTO-GENERATED METHOD.
	 * Contents will be overwritten.
	 */
	private void initComponents() {
		resourceBundle = ResourceBundle.getBundle(
				"com.proyecto.core.vista.echo.resource.localization.etiquetas",
				ApplicationInstance.getActive().getLocale());
		Column column1 = new Column();
		add(column1);
		Row row3 = new Row();
		row3
				.setInsets(new Insets(new Extent(0, Extent.PX), new Extent(30,
						Extent.PX), new Extent(0, Extent.PX), new Extent(0,
						Extent.PX)));
		column1.add(row3);
		Row row1 = new Row();
		row1.setStyleName("2OpenLabs.Row.Datos");
		column1.add(row1);
		Label label1 = new Label();
		label1.setText(resourceBundle
				.getString("CoreVista.CPAutorizacion.Usuario"));
		label1.setStyleName("2OpenLabs.Label.Etiqueta");
		RowLayoutData label1LayoutData = new RowLayoutData();
		label1LayoutData.setWidth(new Extent(120, Extent.PX));
		label1LayoutData.setAlignment(new Alignment(Alignment.RIGHT,
				Alignment.DEFAULT));
		label1.setLayoutData(label1LayoutData);
		row1.add(label1);
		txtUsuario = new TextField();
		txtUsuario.setWidth(new Extent(200, Extent.PX));
		txtUsuario.setStyleName("2OpenLabs.TextField.Campo");
		RowLayoutData txtUsuarioLayoutData = new RowLayoutData();
		txtUsuarioLayoutData.setWidth(new Extent(200, Extent.PX));
		txtUsuario.setLayoutData(txtUsuarioLayoutData);
		row1.add(txtUsuario);
		Row row2 = new Row();
		row2.setStyleName("2OpenLabs.Row.Datos");
		column1.add(row2);
		Label label2 = new Label();
		label2.setText(resourceBundle
				.getString("CoreVista.CPAutorizacion.Clave"));
		label2.setStyleName("2OpenLabs.Label.Etiqueta");
		RowLayoutData label2LayoutData = new RowLayoutData();
		label2LayoutData.setWidth(new Extent(120, Extent.PX));
		label2LayoutData.setAlignment(new Alignment(Alignment.RIGHT,
				Alignment.DEFAULT));
		label2.setLayoutData(label2LayoutData);
		row2.add(label2);
		txtPass = new PasswordField();
		txtPass.setWidth(new Extent(200, Extent.PX));
		txtPass.setStyleName("2OpenLabs.TextField.Campo");
		RowLayoutData txtPassLayoutData = new RowLayoutData();
		txtPassLayoutData.setWidth(new Extent(200, Extent.PX));
		txtPass.setLayoutData(txtPassLayoutData);
		row2.add(txtPass);
	}
}
